package com.gushenge.core.requests

import android.util.Log
import com.gushenge.core.beans.*
import com.gushenge.core.dao.GlobalConsts
import com.gushenge.core.dao.MMKVConsts
import com.gushenge.core.httpSign
import com.gushenge.core.time
import com.gushenge.core.toast
import com.rxlife.coroutine.RxLifeScope
import rxhttp.awaitResult
import rxhttp.toClass
import rxhttp.wrapper.param.RxHttp

object QuanZiRequest {
    //群列表
    fun QuanZiQun(listener: ArrayList<QunBean>?.() -> Unit){
        RxLifeScope().launch {
              RxHttp.postForm(GlobalConsts.QUANZI_QUN)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("t", time)
                .add("sign", httpSign(MMKVConsts.uid))
                .toClass<Codes<QunBean>>()
                .awaitResult {
                    if (it.code==1){
                        it.data?.listener()
                    }else{
                        it.message.toast()
                    }
                }.onFailure {
                    listener.invoke(null)
                }
        }
    }
    // 评论列表
    fun getDynamic(p:Int,listener: Codes<DynamicBean>?.() -> Unit){
        RxLifeScope().launch {
              RxHttp.postForm(GlobalConsts.DYNAMIC)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("p",p)
                .add("t", time)
                .add("sign", httpSign(MMKVConsts.uid))
                .toClass<Codes<DynamicBean>>()
                .awaitResult {
                    if (it.code==1){
                        it?.listener()
                    }else{
                        it.message.toast()
                    }
                }.onFailure {
                    listener.invoke(null)
                }
        }
    }
    // 获取游戏列表
    fun getDynamicGame(listener: ArrayList<DynamicGameBean>?.() -> Unit){
        RxLifeScope().launch {
             RxHttp.postForm(GlobalConsts.DYNAMIC_Game)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("t", time)
                .add("sign", httpSign(MMKVConsts.uid))
                .toClass<Codes<DynamicGameBean>>()
                .awaitResult {
                    if (it.code==1){
                        it.data?.listener()
                    }else{
                        it.message.toast()
                    }
                }.onFailure {
                    listener.invoke(null)
                }
        }
    }

    // 发表动态
    fun sendDongTai(vidio:String?,imgs:String?,content:String?,listener:Boolean.()->Unit){
        RxLifeScope().launch {
              RxHttp.postForm(GlobalConsts.SenddongTai)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("t", time)
                .add("sign", httpSign(MMKVConsts.uid))
                .add("video",vidio)
                .add("imgs",imgs)
                .add("content",content)
                .toClass<Code<String>>()
                .awaitResult {
                    if (it.code==1){
                        listener(true)
                    }else{
                        listener(false)
                        it.message.toast()
                    }
                }.onFailure {
                    listener(false)
                    Log.e("TAG", "sendDongTai: ${it.localizedMessage}", )
                   "发表失败".toast()
                }
        }
    }

    /**
     * id 评论或者动态ID
     * type 0动态   1 评论
     */
    fun DynamicZan(id:String,type:String = "0",listener:Boolean .()->Unit){
        RxLifeScope().launch {
              RxHttp.postForm(GlobalConsts.Dynamic_zan)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("t", time)
                .add("id", id)
                .add("type", type)
                .add("sign", httpSign(MMKVConsts.uid))
                .toClass<Code<String>>()
                .awaitResult {
                    if (it.code==1){
                        listener(true)
                    }else{
                        listener(false)
                        it.message.toast()
                    }
                }.onFailure {
                    listener(false)
                    Log.e("TAG", "sendDongTai: ${it.localizedMessage}", )
                    "发表失败".toast()
                }
        }
    }

    /**
     *评论列表
     */
    fun getDynamicPingLun(id:String,listener:Codes<DynamicBean>?.()->Unit){
        RxLifeScope().launch {
              RxHttp.postForm(GlobalConsts.Dynamic_PingLun)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("t", time)
                .add("id", id)
                .add("type", 0)
                .add("sign", httpSign(MMKVConsts.uid))
                .toClass<Codes<DynamicBean>>()
                .awaitResult {
                    if (it.code==1){
                        listener(it)
                    }else{
                        listener(null)
                        it.message.toast()
                    }
                }.onFailure {
                    listener(null)
                    Log.e("TAG", "sendDongTai: ${it.localizedMessage}", )
                    "发表失败".toast()
                }
        }
    }

    /**
     *评论列表
     */
    fun getDynamicZiPingLun(id:String,listener:Codes<DynamicBean>?.()->Unit){
        RxLifeScope().launch {
             RxHttp.postForm(GlobalConsts.Dynamic_ZiPingLun)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("t", time)
                .add("id", id)
                .add("type", 0)
                .add("sign", httpSign(MMKVConsts.uid))
                .toClass<Codes<DynamicBean>>()
                .awaitResult {
                    if (it.code==1){
                        listener(it)
                    }else{
                        listener(null)
                        it.message.toast()
                    }
                }.onFailure {
                    listener(null)
                    Log.e("TAG", "sendDongTai: ${it.localizedMessage}", )
                    "发表失败".toast()
                }
        }
    }

    /**
     * 发表评论
     */
    fun sendDynamicPingLun(dongtai_id:String,pid:String="",ppid:String="",content:String="",listener: Boolean.() -> Unit){
        RxLifeScope().launch {
              RxHttp.postForm(GlobalConsts.Dynamic_PingLunAdd)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("t", time)
                .add("dongtai_id", dongtai_id)
                .add("pid", pid)
                .add("ppid", ppid)
                .add("content",content)
                .add("sign", httpSign(MMKVConsts.uid))
                .toClass<Code<String>>()
                .awaitResult {
                    if (it.code==1){
                        listener(true)
                    }else{
                        it.message.toast()
                    }
                }.onFailure {
                    Log.e("TAG", "sendDongTai: ${it.localizedMessage}", )
                    "发表失败".toast()
                }
        }
    }
    //动态详情
    fun getDynamicInfo(id:String,listener:DynamicBean?.()->Unit){
        RxLifeScope().launch {
              RxHttp.postForm(GlobalConsts.DynamicInfo)
                .add("language", MMKVConsts.language)
                .add("member_id", MMKVConsts.sub)
                .add("uid", MMKVConsts.uid)
                .add("id", id)
                .add("t", time)
                .add("sign", httpSign(MMKVConsts.uid))
                .toClass<Code<DynamicBean>>()
                .awaitResult {
                    if (it.code==1){
                        listener(it.data)
                    }else{
                        it.message.toast()
                    }
                }.onFailure {
                    listener(null)
                    Log.e("TAG", "sendDongTai: ${it.localizedMessage}", )
                    "获取详情失败，请重试".toast()
                }
        }
    }
}